# cpm changelog

список изменений пакетоного менеждера и router-файлов:

## new: cpm-full v2.1 rf-5 | 16 Oct 2022

В репозитории началась разрабока нового cpm, с расширенным функционалом.
На данный момент вы можете использовать `cpm` или `cpm-mini`.

- Старая `cmp -> cpm-mini`
- Изменена архитектура
- Добавлены компоненты Чио
- `Console`: Ключи заменены на флаги
- `Console`: Изменён вид справки о командах
- `COnsole`: Убрана асинхронность
- Временно убрана функция поиска пакетов
- Убрана автоматическая сборка индексов
- Если пакеты не были удалены, не будет производится сборка индекса
- Изменён вид просмотра списка репозиториев
- Временное решение для одинаковых PID пакетов
- Теперь не получится удалить пакет, который требуется другим пакетам
- Предупрждение, если в `packages.toml` есть неправильные параметры
- Добавлены параметр `group`
- Добавлен расширенный параметр `multiple`
- Теперь удаляются файлы пакета, а не всё директория
- Исправлена загрузка `packages.toml`
- Предупрждение, если зависимость указывает сама на себя

**И другие изменения**

## release V2.0 rf-V5 | 12 Jun 2022

- Обновлена основная информация
- Добавлены термины, rf-v5, настройки cpm

**cpm V1.6.1 rf-v5 | До рефакторинга проекта**:

- `select()`: Функция для выбора значения из списка
- `log`: Немного изменен стиль логов, меньше цветастости
- `Router.get_requirements()`: Возможность выбора необязательных зависимостей

**cpm V2.0 index-V5**:

Сделан рефакториег проекта, очень много изменений.

- Изменение архитектуры cpm
- Изменены настройки cpm
- Изменено название файла `router -> index`
- `group()`: Сообщение о группе действия  
- `do_you_want_to_continue`: Сообщение, желает ли пользователь продолжить
- `check_params()`: Стала более общей функцией
- `check_params()`: Исправлена обработка пустых и отцуцтвующих значений
- `load_file_from_url()`: Общая асинхронная функция для загрузки файлов
- `load_files()`: Общая асинхронная функция загрузки группы файлов
- `print_dict()`: Функция отображения словаря
- Добавлены функции: `load_file(), save_file()`
- `Config`: класс для сборки настроек cpm
- `SearchEngene`: класс поискового движка пакетов
- Удалены заголовки индекса пакетов
- Удалены методы создания нового пакета/изменения параметров пакета

**Package**:

- `is_installed`: метод проверки установленность пакета для решения проблемы с **фантомными пакетами**
- `status`: изменён стиль отображения пакетов
- `print_params`: теперь использует `print_dict` 

**PackagesIndex**:

- переработнный класс кправления индексом пакетоа
- вырезаны все способы загрзуки и сохрания файла индекса пакетов
- `compile`: введена проверка установленности пакета
- `add_package`: метод добавления пакета в индекс 
- `extended_info`: поиска проблем с зависимостями преобразован в поиск расширенной инофрмаци
- `get_require`: добавлена возможность выбора дополнительные зависимостей
- `packages_list`: упроение метода

**PackagesManager**:

- распорядается управлением индексных файлов
- полное изменение архитектуры класса

**и другие незначительные изменения**


## Release: V1.6 rf-v4 | 29 Apr 2022

- Поправка описания
- Пункт "о файлах"
- Добавлен `crt`: инструмент управления источниками

**cpm**:

- Добвлен параметр пакета "full_desc" - полное его описание
- Добавлена поддержка "заголовка" в router-файлах
- Меньше лишних логов - более лаконичный вывод
- Изменение синаксиса `PID` пакетов
- `PackageManager` извлечён класс `Console`, для создания приложений
- `Console`: Поправка методов `ctx_test(), commands_help()`
- Изменение описания команд и их ключей
- Если не указана команда, выводится список всех команд
- Для зависимотей можно указать источник (не только локальные пакеты)
- `Package.status()`: Источника пакета, чуть компактнее вывод
- `Package.print_params()`: Изменение стиля

**Router**:

- `get_router_from_url()`: Добавлена обработка исключений
- `get_requirements()`: Исправлено получение зависимостей
- `info()`: Добавлен вывод заголовка router-файла
- `invalid_requirements_list()`: Теперь может принимать содержмое router-файла


**И другие незачительные обновления**


## Release: V1.5 rf-v3 | 14 Apr 2022

- Подрезано описание
- Удалёно `cpm/` и `console.py`

**cpm**:

- `head`: Удалено полное описание пакета
- Добавлен файл настроек
- `log`: Поправка типов логов
- Добавлены `save_config()`, `load_config()`
- `search_params`: Замена поиска по regex на fnmatch
- Добалвен `Context` для использования команд

**Router**:

- Замена аттрибутов `url, load_params` на `load_url`
- `find_local_packages()`: Добавлен ключ `log`, для отображения состояния поиска
- `find_local_packages()`: Добалвен автоматический поиск проблем с зависимостями
- Если пакетов в файле нашлось больше 1, формат записи `path:pid`
- `get_packages_by_pid()`: Поиск заменён `RegEx -> fnmatch`
- `get_packages_by_pid()`: Добавлено описание, гле были найдены совпадения
- `info()`: Более компактное отображение
- `remove_packages()`: убрано удаление сироток

- `Packages`: Автоматическая подстановка `packages_dir`
- `Packages.status()`: изменение стиля, добалвено описания пакетам
- `PackageMager`: Полная перерботка класса с охранением функционала
- Добавлена возможность ипользование нескольких репозиториев

**И другие более незначительные изменения...**


## Release: V1.3.2 rf-v3 | 10 Apr 2022

- `readme`: Поправки в описании
- `readme`: Добалвены пояснения к версиям
- Добавлен `cpm.py (v1.3.2 rf-V3)`


## V1.4 rf-v3 | 21 Feb 2022

Была сильно изменена архитектура
Можно считать это началом новой ступени.

***

## обновления до v1.4 (внутри репозитория Чио)

**WU-xx** - Week Update xx. Еженедельные обновления для Чио.

**cpm bug fix and path | 07 Feb 2022**:

- Изменены парметры пакета по умолчанию
- `Router.find_local_packages()`: Исправлен поиск файлов типа "`__init__.py`"
- Убраны лишние логи
- `Package.init()`: Новый метод создания/изменения пакетов
- `PackageManager.install_packages()`: Теперь не будет обновлять пакеты, если их локальня версия выше

**2022.2 bug fix (V2.7.2) | 04 Feb 2022**:

- Доработка и оптимизация кода
- Некоторое изменение логов
- Добавлн ключ `-u`, принудительно обновляет индекс пакетов
- Ключ `-S (Server) -> -g (Global)`

`Router`:

- `get_non_usage_packages()`: Выдаёт список пакетов сироток
- `invalid_requirements_list()`: Выдаёт пакеты с неправильными зависимостями
- `package_info()`: Немного изменено отображение
- `remove_packages`: Можно удалить пакеты сиротки

**WU-17 (v2.6.3) | 19 Dec 2021**:

- `main`: Замена `re.search()` -> `re.findall()`
- `package.init`: Новая система создания/редактирования пакетов

**WU-15 (V2.6.1) | 14 Nov 2021**:

- Добавлена функция получения хеш-сумм файлов
- Проверка на отцуцтвующие аттрибута *packages* файлов
- Если вариантов пакетов по имени *>10*, то выводится только их кол-во
- Сравнение хеш-сумм при загрузке файлов
- Предупреждение, если пакета нету в репозитории
- Сообщения, если локальная сборка пакета больше, чем в репозитории
- Отшлефованы логм
- Результаты поиска группируются, это значительно укорачивает вывод

**WU-14 (V2.6-t) | 7 Nov 2021**:

Новое:

- `аттрибут пакетов`: `buid` - номер сборки
- Функции загрузки стали асинхронными, для повышения скорости
- Теперь не будет производится поиск в дирректориях, которые начинаются с "\_"
- `PID` очищается от "./"
- `get_requirements()`: Не учитывает "\*"
- `package_info()`: Пункты *зависимости* и *используют* скрываются при отцуцтвии данных
- `Package`: добавлен аттрибут `path`
- `PackageManager`: Класс с новыми методами загрузки, проверки обновдений
- Новая команда обновления пакетов
- Предупреждение, если неправильно использовать ключ "-S" с командами

изменено:

- `зависимости`: *requests* -> *aiohttp* и *asyncio*
- Параметры загрузки файлов
- router-файл больше не обновляется автоматически
- `package_info`: смена стиля

исправлено:

- `get_package_by_pid`: Выбор всех пакетов
- Сохранение аттрибутов пакета после изменения
- Скачивание пакетов


**NEW! Chio package manager | 3 Nov 2021**:

Новый переработанный менеджер пакетов.
